Формулы

(HyperlinkPaclet["Символы", paclet:tutorial/LettersAndLetterLikeForms])

( = esc)

a -> α
b -> β
γ -> γ
…
f -> ϕ    j -> φ
e -> ϵ  ce -> ε
w -> ω  o -> ω     om -> ο

deg  -> °

α β ϕ φ

(HyperlinkPaclet["Набор формул", paclet:tutorial/KeyboardShortcutListing#1484044289])

Ctrl+6 -> (□^□)
Ctrl+2 -> (Sqrt[□])
…+Ctrl+5 -> (□^(1/□))
Ctrl+/-> (□/□)
Ctrl+Space -> end subexpression
Alt+/-> (*comment*)

Alt+ ),],}-> (),[],{}
Ctrl+,({{-> , □, □, □}})
Ctrl+Enter -> ({{□}, {□}, {□}})
…->(({{□, □, □}, {□, □, □}, {□, □, □}}))

Выражения

Head[(Subscript[a, 1]), (Subscript[a, 2]), (Subscript[a, 3]),…]

(HyperlinkPaclet["Everything is an Expression", paclet:tutorial/EverythingIsAnExpression])

Операции:

FullForm[a+b]

Функции:

F[x,y]

Типы данных:

PhasePoint[q,p]

(HyperlinkPaclet["Expressions", paclet:tutorial/ExpressionsOverview])

Head[]
FullForm[]
TreeForm[]

TreeForm[(Sqrt[1+(x^2)])]

Списки:

FullForm[{1,2,3}]

Part[] ([[]])
Head[] = [[0]]
[[= [[ 
]] = ]]
Range[]
Table[]
Subdivide[]
(для вызова справки выделить имя и нажать F1)

(Sqrt[1+(x^2)])[[1,2,1]]

Правила замены

2+2

(1/2)-(1/3)

2+x

1+x*x

Задание правил

Set[]  (=)

x=4;

?x

1+(Sqrt[x])

Удаление правил, ассоциированных с символом

Clear[x]

?x

x=.

Правила с отложенным вычислением

SetDelayed[]  (:=)

x=4;
y=x;
z:=(x^2);

{x,y,z}

x=5;
{x,y,z}

Функция глобальной переменной

x=2;
F[]:=(x^2);
F[]

x=3;
F[]

Функция с агрументом (паттерн)

F[x_]:=(x^2);
F[3]

Полиморфизм (перегрузка функций)

F[0]:=5;
F[x_]:=(x^2);
F[x_,_]:=(x^3);

?F

{F[0],F[2],F[2,0]}

F["cat","chaos"]

F[0]:=0;
F[1]:=1;
F[n_]:=F[n-1]+F[n-2];  (*определение с использованием рекурсии*)
{F[0],F[1],F[2],F[3],F[4],F[5],F[6],F[7],F[8],F[9]}

(HyperlinkPaclet["Patterns", paclet:tutorial/PatternsOverview])

(HyperlinkPaclet["Specifying Types", paclet:tutorial/SpecifyingTypesOfExpressionInPatterns]) (F[x_type]:=…)
Optional (F[x_:x0]:=…)
PatternTest (F[x_?test]:=…)
Optional with PattenTest (F[x:(_?test):x0]:=…)
Condition (F[x_/;test]:=…)

Sequence of variables (F[x__]:=…)
Parameterized function(F[α_][x_]:=…)
…

Функциональное программирование

Три эквивалентных способа записи применения функции к единственному аргументу

f@a  (* префиксная запись *)
f[a] (* инфиксная запись *)
a//f (* постфиксная запись *)

Композиция функций

A@B@C@X

Функции высшего порядка

Apply[f,{1,2,3}] (* применение функции тождественно замене заголовка: List[1,2,3] -> F[1,2,3] *)

краткая запись

f@@{1,2,3}

ArcTan@@(a+b)

Plus@@{1,2,a,3,2a}

(HyperlinkPaclet["(порядок применения операторов при преобразовании к полной форме)", paclet:tutorial/OperatorInputForms])

Map[f,{1,2,3}] (* поэлементное применение функции к списку *)

краткая запись

f/@{1,2,3}

Поэлементное применение встроенных функций

1+{1,2,3}
2*{1,2,3}
Sin[{1,2,3}]

Атрибут Listable

Attributes[Plus]
Attributes[Sin]

Сравнение функциональных выражений

f@{1,2,3} (* префиксная запись функции *)
f@@{1,2,3} (* Apply *)
f/@{1,2,3} (* Map *)

Apply[] (@@)
Map[] (/@)
Nest[]
Fold[]
NestList[]

Nest[f,a,5]

NestList[f,a,5]

Анонимные (безымянные) функции

Function[{x,y,z},(y^2)+(Sqrt[z])]

F=Function[{x,y,z},(y^2)+(Sqrt[z])];
F[1,2,3]

Function[{x,y,z},(y^2)+(Sqrt[z])][1,2,3]
Function[{x,y,z},(y^2)+(Sqrt[z])]@@{1,2,3}

краткая запись через безымянные аргументы

F=(((#)^2))&
G=(((#1)^2)+(Sqrt[#2]))&

(((#)^2))&@5

F[5]

(((#2)^2)+(Sqrt[#3]))&@@{1,2,3}

использование анонимной функции в качестве аргумента функции высшего порядка

SortBy[{1,2,3,4,5,6},N[Sin[#]]&]

Nest[1+(1/(#))&,⋯,7]

Nest[1+(1/(#))&,⋯,7]//TeXForm

Nest[1+(1/(#))&,1,15]//N
((1+(Sqrt[5]))/2)//N

Бифуркационная диаграмма

Логистическое отображение

(Subscript[x, n+1])=k (Subscript[x, n]) (1-(Subscript[x, n]))

k=3.5;
k # (1-#)&;

(*динамика системы*)
NestList[k # (1-#)&,0.1,100]//ListLinePlot

(*предельные точки*)
NestList[k # (1-#)&,0.5,10000][[-32;;]]//ListPlot

Финальный код

ListPlot[Table[NestList[k # (1-#)&,0.5,10000][[-32;;]],{k,0,4,.001}]\[Transpose]]

ListLinePlot[Table[Outer[List,{k},Sort[NestList[k #(1-#)&,.5,10000][[-32;;]]]][[1]],{k,0,4,.001}]\[Transpose],AxesLabel->{"k","x"},LabelStyle->Large,ImageSize->Large]